增加一個欄位已記錄人員是否還繼續活動 沒有活動則不會顯示在簽到頁面 可以在list特過左滑編輯狀態
private func loadUsers() {
let realm = try! Realm()
users = realm.objects(User.self).filter("active == true").sorted(byKeyPath: "createdAt", ascending: false)
tbvselect.reloadData()
}
// 定義左滑操作
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
switch currentDisplayMode {
case .users:
// 獲取選中的使用者
guard let user = users?[indexPath.row] else { return nil }
// 創建刪除操作
let deleteAction = UIContextualAction(style: .destructive, title: "刪除") { [weak self] (_, _, completionHandler) in
self?.deleteUser(at: indexPath)
completionHandler(true)
}
deleteAction.backgroundColor = .systemRed
// 創建編輯活動狀態的操作
let toggleActiveTitle = user.active ? "停用" : "啟用"
let toggleActiveAction = UIContextualAction(style: .normal, title: toggleActiveTitle) { [weak self] (_, _, completionHandler) in
self?.toggleUserActiveStatus(user)
completionHandler(true)
}
toggleActiveAction.backgroundColor = user.active ? .systemOrange : .systemGreen
// 創建操作配置
let configuration = UISwipeActionsConfiguration(actions: [deleteAction, toggleActiveAction])
configuration.performsFirstActionWithFullSwipe = false
return configuration
case .checkInRecords:
// 對簽到記錄只提供刪除操作
let deleteAction = UIContextualAction(style: .destructive, title: "刪除") { [weak self] (_, _, completionHandler) in
self?.deleteCheckInRecord(at: indexPath)
completionHandler(true)
}
deleteAction.backgroundColor = .systemRed
let configuration = UISwipeActionsConfiguration(actions: [deleteAction])
configuration.performsFirstActionWithFullSwipe = false
return configuration
}
}
// 切換用戶活動狀態
private func toggleUserActiveStatus(_ user: User) {
let realm = try! Realm()
do {
try realm.write {
// 切換活動狀態
user.active = !user.active
}
// 顯示成功訊息
let statusMessage = user.active ? "已啟用" : "已停用"
showSuccessAlert(message: "用戶 \(user.Name) \(statusMessage)")
// 重新加載數據
loadUsers()
} catch {
showErrorAlert(message: "更新狀態失敗:\(error.localizedDescription)")
}
}